// app 应用程序的事件生命周期
// BrowserWindow 创建和管理app的窗口

const { app, BrowserWindow, ipcMain, Menu } = require("electron");
const path = require("path");

console.log(process.platform);
// 创建一个窗口、让窗口加载index.html页面 这个界面是运行在渲染进程中的
const createWindow = () => {
  const win = new BrowserWindow({
    width: 600,
    height: 400,
    // alwaysOnTop: true,
    x: 1500,
    y: 100,
    show: false, // 默认情况下创建一个窗口对象之后就会显示，但是设置show: false之后，窗口对象创建之后不会显示，需要调用win.show()方法显示
    maxHeight: 600,
    maxWidth: 600,
    minHeight: 300,
    minWidth: 300,
    resizable: false, // false 不可改变窗口大小 默认是true
    title: "electron-demo", //自定义当前应用的显示标题
    frame: true, //隐藏标题栏 隐藏之后窗口就拖不动了
    autoHideMenuBar: false, //隐藏菜单栏
    webPreferences: {
      nodeIntegration: true,
      contextIsolation: false,
    },
    // transparent: true,

    // icon:'ceshi.ico',//logo图标设置
  });

  win.on("ready-to-show", () => {
    win.show();
  });

  // 1.自定义菜单模版
  const template = [
    {
      label: "角色",
      submenu: [
        {
          label: "复制",
          role: "copy", //角色 相当于默认的功能可以直接使用 （标准菜单项操作）
        },
        { type: "separator" }, //分割线
        {
          label: "剪切",
          role: "cut",
        },
        { type: "separator" }, //分割线
        {
          label: "粘贴",
          role: "paste",
        },
        { type: "separator" }, //分割线
        {
          label: "最小化",
          role: "minimize",
        },
      ],
    },
    {
      label: "类型",
      submenu: [
        {
          label: "选项1",
          type: "checkbox",
        },
        {
          label: "选项2",
          type: "checkbox",
        },
        {
          label: "选项3",
          type: "checkbox",
        },
        { type: "separator" }, //分割线
        {
          label: "item1",
          type: "radio",
        },
        {
          label: "item2",
          type: "radio",
        },
        { type: "separator" }, //分割线
        {
          label: "windows",
          type: "submenu",
          role:'windowMenu'
        },
      ],
    },
    {
      label:'其他',
      submenu:[
        {
          label:'打开',
          icon:'./cloud.png',//添加自定义图标
          accelerator:'CommandOrControl+O',//设置快捷键
          click(){
            console.log('打开操作执行了');
          }
        }
      ]
    }
  ];

  // 2.创建菜单
  const menu = Menu.buildFromTemplate(template);

  // 3.设置菜单
  Menu.setApplicationMenu(menu);

  // win.setAspectRatio(1)
  win.loadFile(path.join(__dirname, "index.html")); // win.loadFile("index.html")

  // 监听渲染进程请求新窗口
  ipcMain.on("open-new-window", () => {
    const newWin = new BrowserWindow({
      width: 500,
      height: 500,
      webPreferences: {
        nodeIntegration: true,
        contextIsolation: false,
      },
    });
    newWin.loadFile(path.join(__dirname, "list.html"));
  });

  // win.loadURL('https://www.baidu.com')
  //   win.webContents.toggleDevTools();// 打开开发者工具

  // win.webContents.on("did-finish-load", () => {
  //   console.log("3->did-finish-load");
  // });

  // win.webContents.on("dom-ready", () => {
  //   console.log("1->dom-ready");
  // });

  win.on("closed", () => {
    console.log("8->closed");
    win = null; //释放窗口
  });
};

app.on("ready", () => {
  console.log("1->ready");
  createWindow();
});

// 应用准备就绪时调用函数
// app.whenReady().then(() => {
//   createWindow();

//   app.on("activate", () => {
//     if (BrowserWindow.getAllWindows().length === 0) {
//       createWindow();
//     }
//   });
// });

app.on("window-all-closed", () => {
  console.log("4->window-all-closed");
  //判断用户不使用 macOS 后调用 app.quit() 来退出您的应用程序,是macOS不退出
  if (process.platform !== "darwin") {
    app.quit();
  }
});

// app.on("before-quit", () => {
//   console.log("5->before-quit");
// });

// app.on("will-quit", () => {
//   console.log("6->will-quit");
// });

// app.on("quit", () => {
//   console.log("7->quit");
// });
